
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head ||!head->next){
            return head;
        }
        ListNode* temp = new ListNode(0,head);
        ListNode* p = temp;
        while(p->next && p->next->next){
            if(p->next->val == p->next->next->val){
                ListNode* q = p->next->next;
                while(q && p->next->val == q->val){
                     q = q->next;
                }
                if(!q)   p->next = NULL;
                else    p->next = q;
            }else{
                p=p->next;
            }
        }
         return temp->next;
    }
};

